]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
MessageTray: be explicit about removing tweens
authorGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 22 Nov 2012 20:28:54 +0000 (21:28 +0100)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 22 Nov 2012 20:36:17 +0000 (21:36 +0100)
Turns out that tweener has a very complex logic to decide when a new
tween on the same properties overrides completely the old, and unfortunately
what we were doing was not enough in all cases.
Just be explicit, and don't let anything else mess with the state.

https://bugzilla.gnome.org/show_bug.cgi?id=688895

js/ui/messageTray.js

index 266759b95e64d64fa625a9a74f269ba8b7d421dd..061135ae78fd9267319d959c4c39484460a66a0c 100644 (file)
@@ -2365,6 +2365,7 @@ const MessageTray = new Lang.Class({
         }
 
         if (this._notificationRemoved) {
+            Tweener.removeTweens(this._notificationWidget);
             this._notificationWidget.y = this.actor.height;
             this._notificationWidget.opacity = 0;
             this._notificationState = State.HIDDEN;
@@ -2428,10 +2429,10 @@ const MessageTray = new Lang.Class({
         if (this._notificationWidget.y < expandedY) {
             this._notificationWidget.y = expandedY;
         } else if (this._notification.y != expandedY) {
+            // Remove any other tween that could mess with the state machine
+            Tweener.removeTweens(this._notificationWidget);
             // Tween also opacity here, to override a possible tween that's
-            // currently hiding the notification. This will ensure that the
-            // notification is not removed when the onComplete handler for this
-            // one triggers.
+            // currently hiding the notification.
             this._tween(this._notificationWidget, '_notificationState', State.SHOWN,
                         { y: expandedY,
                           opacity: 255,